const db = require('../db/index')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const config = require('../config')
// 注册用户的处理函数
exports.regUser = (req,res)=>{
  const userinfo = req.body
  const sqlStr = 'select * from ev_users where username=?'
  db.query(sqlStr,userinfo.username,(err,results)=>{
    if(err)return res.cc(err.message)
    if(results.length>0)return res.cc('用户名被占用，请更换其他用户名')
    // 以上都不满足则可以进行注册用户
  // 插入数据之前先把用户的密码进行加密
  userinfo.userPsd = bcrypt.hashSync(userinfo.userPsd,10)
    const sql = 'insert into ev_users set ?'
    // 插入数据
    db.query(sql,{username:userinfo.username,userPsd:userinfo.userPsd,phone_number:userinfo.phone_number},(err,results)=>{
      if(err)return res.send({status:1,message:err.message})
      if(results.affectedRows!==1)return res.cc('注册用户失败,请稍后再试!')
        // 以上都不满足则注册成功
      res.cc('注册成功!',0)
    })
  })
}

// 用户登录的处理函数
exports.login = (req,res)=>{
 const userinfo = req.body
 const sqlStr = 'select * from ev_users where username=?'
 db.query(sqlStr,userinfo.username,(err,results)=>{
  if(err)return res.cc(err)
  if(results.length!==1)return res.cc('登录失败!')
  // 判断用户密码是否一致
  const compareResult = bcrypt.compareSync(userinfo.userPsd,results[0].userPsd)
  if(!compareResult)return res.cc('登录失败,密码错误!')
  // 进行剔除密码、手机号、头像
  const user = {...results[0],userPsd:'',phone_number:'',user_pic:''}
  // 获取toke值
  const tokenStr = jwt.sign(user,config.jwtSecretKey,{expiresIn:'10h'})
  res.send({
    status:0,
    message:"登录成功!",
    token:'Bearer ' + tokenStr
  }) 
 })
}